package com.dhecp.project.system.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.dhecp.common.core.domain.AjaxResult;
import com.dhecp.project.system.domain.SysRoleInfo;

/**
 * 
 * @author DH-Xxj
 * @version 2019年10月18日
 */
public interface SysRoleInfoService {

	/**
	 * 按条件查询角色信息
	 * @param params
	 * @return List-SysRoleInfo
	 * @throws Exception
	 * @author DH-Xxj
	 */
	List<SysRoleInfo> queryRoleInfoList(Map<String, Object> params) throws Exception;

	/**
	 * 查询指定用户的角色列表
	 * @param userId 必要参数：用户编号
	 * @return HashSet-String
	 * @author DH-Xxj
	 */
	Set<String> queryRoleInfoListByUserIdToString(String userId);

    /**
     * 查询所有有效的角色，以Map数组形式返回（分配用户角色）
     * @param params
     * @return List - Map 
     * @author DH-Xxj
     */
	List<Map<String, String>> queryRoleToMapList(Map<String, Object> params);

    /**
     * 查询用户已分配的有效角色列表，并返回Guid数组（分配用户角色）
     * @param params
     * @return List- String
     * @author DH-Xxj
     */
	List<String> queryUserBindRoleList(Map<String, Object> params);

	/**
	 * 查询指定用户未分配的角色列表
	 * @param userId 必要参数：用户编号
	 * @return List-SysRoleInfo
	 * @throws Exception
	 * @author DH-Xxj
	 */
	List<SysRoleInfo> queryLackRoleListByUserId(Map<String, Object> params) throws Exception;

	/**
	 * 查询指定用户已分配的角色列表
	 * @param userId 必要参数：用户编号
	 * @return List-SysRoleInfo
	 * @author DH-Xxj
	 */
	List<SysRoleInfo> queryRoleInfoListByUserId(Map<String, Object> params) throws Exception;

    /**
     * 新增角色
     * @param roleInfoItems 必要参数：对应实体类的json格式字符串
     * @return AjaxResult
     * @author DH-Xxj
     */
	AjaxResult insertRoleInfo(Map<String, Object> params);

    /**
     * 通过guid删除角色
     * @param roleInfoItems 必要参数：对应实体类的json格式字符串
     * @return AjaxResult
     * @author DH-Xxj
     */
	AjaxResult deleteRoleInfo(Map<String, Object> params);

    /**
     * 修改角色信息
     * @param roleInfoItems 必要参数：对应实体类的json格式字符串
     * @return AjaxResult
     * @author DH-Xxj
     */
	AjaxResult updateRoleInfo(Map<String, Object> params);

	/**
	 * 通过角色名称
	 * @param String 必要参数：角色名称
	 * @return SysRoleInfo
	 * @author DH-Xxj
	 */
	SysRoleInfo findRoleByRoleName(String roleName);
}